﻿<!DOCTYPE HTML>
<html lang="zh">
<head>
<title>下载 - 语法 &amp; 使用 | AutoHotkey v2</title>
<meta name="description" content="The 下载 function downloads a file from the Internet." />
<meta name="ahk:equiv-v1" content="commands/URLDownloadToFile.htm" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="../static/theme.css" rel="stylesheet" type="text/css" />
<script src="../static/content.js" type="text/javascript"></script>
<script type="text/javascript">$(function(){0<=window.navigator.userAgent.toLowerCase().indexOf("ucbrowser")&&CaoNiMaDeUc()})</script>
</head>
<body>

<h1>下载</h1>

<p>从互联网下载文件.</p>

<pre class="Syntax"><span class="func">下载</span> URL, Filename </pre>
<h2 id="Parameters">参数</h2>
<dl>

  <dt>URL</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#strings">字符串</a></p>
    <p>要下载的文件的 URL. 例如, http://someorg.org 可能会获取到该组织的欢迎页面.</p>
  </dd>

  <dt>Filename</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#strings">字符串</a></p>
    <p>指定要在本地创建的文件的名称, 如果没有指定绝对路径, 则假定该文件位于 <a href="../Variables.htm#WorkingDir">内_工作目录</a>. 任何现有文件都将被新文件 <strong>覆盖</strong>.</p>
  </dd>

</dl>

<h2 id="Error_Handling">错误处理</h2>
<p>失败时抛出异常.</p>

<h2 id="Remarks">备注</h2>
<p>此函数下载到文件. 要下载到变量, 请参阅下面的示例. 其他方法, 请参阅以下论坛主题: <a href="https://www.autohotkey.com/forum/topic10466.html">www.autohotkey.com/forum/topic10466.html</a></p>
<p>即使远程文件不存在, 下载也可能会成功. 这是因为许多 Web 服务器发送错误页面来代替丢失的文件. 该错误页面将代替 <em>Filename</em> 保存.</p>
<p>防火墙或存在多个网络适配器可能导致此函数失败. 此外, 某些网站可能会阻止此类下载.</p>
<p><strong>缓存</strong>: 默认情况下, 直接从远程服务器检索 URL(即, 不从 Internet Explorer 的缓存检索). 要允许缓存, 请在 URL 之前加 *0 后跟一个空格; 例如: <em>*0 http://someorg.org</em>. 星号后的 0 可以用任何有效的 dwFlags 数字代替; 有关详情, 请在 <a href="http://www.microsoft.com">www.microsoft.com</a> 搜索 InternetOpenUrl.</p>
<p><strong>代理</strong>: 如果在 Microsoft Internet Explorer 的设置中配置了代理服务器, 则将使用它.</p>
<p>还支持 <strong>FTP 和 Gopher</strong> URL. 例如:</p>
<pre>下载 "ftp://example.com/home/My File.zip", "C:\My Folder\My File.zip"  <em>; 对数 in anonymously.</em>
下载 "ftp://user:pass@example.com:21/home/My File.zip", "C:\My Folder\My File.zip"  <em>; 对数 in as a specific user.</em>
下载 "ftp://user:pass@example.com/My Directory", "C:\Dir Listing.html"  <em>; Gets a directory listing in HTML 格式化字符串.</em></pre>

<h2 id="Related">相关</h2>
<p><a href="FileRead.htm">读文件</a>, <a href="FileCopy.htm">文件复制</a></p>

<h2 id="Examples">示例</h2>
<div class="ex" id="ExBasic">
<p><a href="#ExBasic">#1</a></p>
<pre>下载 "http://autohotkey.com/download/2.0/version.txt", "C:\AutoHotkey Latest Version.txt"
下载 "http://someorg.org/archive.zip", "C:\SomeOrg's Archive.zip"</pre>
</div>

<div class="ex" id="ExWHR">
<p><a href="#ExWHR">#2</a>: 下载 text to a variable:</p>
<pre>whr := 组件对象创建("WinHttp.WinHttpRequest.5.1")
whr.Open("GET", "http://autohotkey.com/download/2.0/version.txt")
whr.发送()
<em>; 使用 'true'(上面) 和调用下面的函数, 允许脚本保持响应.</em>
whr.WaitForResponse()
version := whr.ResponseText
信息框 version
</pre>
</div>

<div class="ex" id="ExXHR">
<p><a href="#ExXHR">#3</a>: 发出异步 HTTP 请求.</p>
<pre>req := 组件对象创建("Msxml2.XMLHTTP")
<em>; 打开启用异步的请求.</em>
req.open("GET", "https://www.autohotkey.com/download/2.0/version.txt", true)
<em>; 设置回调函数.</em>
req.onreadystatechange := 检索函数("Ready")
<em>; 发送请求. Ready() 将在其完成后被调用.</em>
req.发送()
<em>/*
; 如果你要一直等待到下载完毕, 就不需要 onreadystatechange 了.
; 设置 async=true 和像这样等待, 可以在下载过程中允许脚本保留响应
; 而 async=false 将使脚本无响应.
while req.readyState != 4
    等待 100
*/</em>
#持续运行

Ready() {
    global req
    如果 (req.readyState != 4)  <em>; 没有完成.</em>
        返回
    如果 (req.status == 200) <em>; OK.</em>
        信息框 "Latest AutoHotkey version: " req.responseText
    否则
        信息框 "Status " req.status,, 16
    退出应用
}</pre>
</div>

</body>
</html>